#coding=utf8
class WorldException(Exception):
    '''Базовое исключение для мира.'''
    pass

class NoFreePlace(WorldException):
    '''Исключение, возникающее при нехватке свободного места'''
    def __init__(self):
        WorldException.__init__(self, 'No free place')

class NoWay(WorldException):
    '''Исключение, возникающее при отсутствии пути из точки xy0 в xy1
    '''
    def __init__(self, xy0, xy1):
        WorldException.__init__(self, 'No way from %s to %s' % (xy0, xy1))

class BusyPlace(WorldException):
    '''Исключение, возникающее при попытке занять уже занятые координаты.'''
    def __init__(self, xy):
        WorldException.__init__(self, '%s is busy' % xy)

class NoObjects(WorldException):
    '''Исключение, возникающее в случае отсутствия объектов.'''
    def __init__(self):
        WorldException.__init__(self, 'No objects')

class BadDirection(WorldException):
    '''Исключение, возникающее при неправильном направлении.'''
    def __init__(self, direction):
        WorldException.__init__(self, 'Bad direction: %s' % direction)

class NotEatable(WorldException):
    '''Возбуждается, когда пытаются съесть несъедобный объект.
    '''
    def __init__(self, obj):
        WorldException.__init__(self, 'Not eatable object: %s' % obj)